package com.ruoyi.warehousing.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author WangChangShuo
 * @date 2022年05月26日 17:26
 */
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Warehousing extends BaseEntity {
    private String selectEndtime;
    private String scrq;
    private String sxrq;
    private Long remainNum;
    private Long selectId;
    private String endTime;
    private Long factor;
    private String unit;
    private String startTime;
    /**
     * 产品库存主键
     */
    private Long warehousingId;
    /**
     * 公司主键
     */
    private Long deptId;
    /**
     * 产品主键
     */
    private Long productId;
    /**
     * 产品名称
     */
    private String productName;
    /**
     * 产品唯一码
     */
    private String modelCode;
    /**
     * 产品规格主键
     */
    private Long modelNo;
    /**
     * 产品型号规格
     */
    private String productType;
    private String type;
    /**
     * 产品批号
     */
    private String batch;
    /**
     * 查询条件
     */
    private String keyIm;
    /**
     * 失效日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date effectiveDate;
    /**
     * 生产日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date productionDate;
    /**
     * 数量
     */
    private int warehousingNum;
    private Long amount;
    /**
     * 数量
     */
    private int num;
    /**
     * 单价
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal price;
    /**
     * 税率(1 3 5 13)
     */
    private String taxRate;
    /**
     * 含税单价
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal taxPrice;
    /**
     * 医疗器械注册证号
     */
    private String medicalNumber;
    /**
     * 注册证到期日
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    private Date medicalEndTime;
    /**
     * 查询
     */
    private List<Map<String, Object>> ids;
    /**
     * 执行状态
     */
    private String executeStatus;

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getSelectEndtime() {
        return selectEndtime;
    }

    public void setSelectEndtime(String selectEndtime) {
        this.selectEndtime = selectEndtime;
    }

    public String getScrq() {
        return scrq;
    }

    public void setScrq(String scrq) {
        this.scrq = scrq;
    }

    public String getSxrq() {
        return sxrq;
    }

    public void setSxrq(String sxrq) {
        this.sxrq = sxrq;
    }

    public Long getRemainNum() {
        return remainNum;
    }

    public void setRemainNum(Long remainNum) {
        this.remainNum = remainNum;
    }

    public Long getSelectId() {
        return selectId;
    }

    public void setSelectId(Long selectId) {
        this.selectId = selectId;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public Long getFactor() {
        return factor;
    }

    public void setFactor(Long factor) {
        this.factor = factor;
    }

    public Long getAmount() {
        return amount;
    }

    public void setAmount(Long amount) {
        this.amount = amount;
    }

    public String getExecuteStatus() {
        return executeStatus;
    }

    public void setExecuteStatus(String executeStatus) {
        this.executeStatus = executeStatus;
    }


    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(String taxRate) {
        this.taxRate = taxRate;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getTaxPrice() {
        return taxPrice;
    }

    public void setTaxPrice(BigDecimal taxPrice) {
        this.taxPrice = taxPrice;
    }

    public List<Map<String, Object>> getIds() {
        return ids;
    }

    public void setIds(List<Map<String, Object>> ids) {
        this.ids = ids;
    }

    public String getModelCode() {
        return modelCode;
    }

    public void setModelCode(String modelCode) {
        this.modelCode = modelCode;
    }

    public Date getMedicalEndTime() {
        return medicalEndTime;
    }

    public void setMedicalEndTime(Date medicalEndTime) {
        this.medicalEndTime = medicalEndTime;
    }

    public Long getWarehousingId() {
        return warehousingId;
    }

    public void setWarehousingId(Long warehousingId) {
        this.warehousingId = warehousingId;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public String getProductType() {
        return productType;
    }

    public void setProductType(String productType) {
        this.productType = productType;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getModelNo() {
        return modelNo;
    }

    public void setModelNo(Long modelNo) {
        this.modelNo = modelNo;
    }

    public String getBatch() {
        return batch;
    }

    public void setBatch(String batch) {
        this.batch = batch;
    }

    public Date getEffectiveDate() {
        return effectiveDate;
    }

    public void setEffectiveDate(Date effectiveDate) {
        this.effectiveDate = effectiveDate;
    }

    public Date getProductionDate() {
        return productionDate;
    }

    public void setProductionDate(Date productionDate) {
        this.productionDate = productionDate;
    }

    public int getWarehousingNum() {
        return warehousingNum;
    }

    public void setWarehousingNum(int warehousingNum) {
        this.warehousingNum = warehousingNum;
    }

    public String getMedicalNumber() {
        return medicalNumber;
    }

    public void setMedicalNumber(String medicalNumber) {
        this.medicalNumber = medicalNumber;
    }

    public String getKeyIm() {
        return keyIm;
    }

    public void setKeyIm(String keyIm) {
        this.keyIm = keyIm;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Warehousing(Long deptId, Long productId, String productType, String batch){
        this.deptId = deptId;
        this.productId = productId;
        this.productType = productType;
        this.batch = batch;
    }
}
